home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Presentations / Presentations ’97 / Sessions ’97 / Multiplatform Code⁄Data Sharing / HelloBothWorlds / GE / LibHdr / gelemnts.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-15  |  6.1 KB  |  178 lines  |  [TEXT/CWIE]

  1. /*
  2.     GraphElements.h
  3.     
  4.     Basic Graphic Elements for version 3.0
  5.     
  6.     Copyright 1994 by Al Evans. All rights reserved.
  7.     
  8.     12/8/93
  9.     
  10.     Updated for GE for Windows 95 1.0, 11/29/95
  11. */
  12.  
  13. #ifndef GRAPHELEMENTS
  14. #define GRAPHELEMENTS
  15.  
  16. #include "DispCtrl.h"
  17. #include "fastbcpy.h"
  18.  
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22.  
  23. //-------------------------------------------------------------------------------------
  24. // Simple PICT-based Graphic Element
  25. //-------------------------------------------------------------------------------------
  26.  
  27. GrafElPtr NewBasicPICT(GEWorldPtr world, OSType id, short plane, short resNum,
  28.                             short mode, short xPos, short yPos);
  29.                             
  30. // Render proc for basic PICT graphic
  31. GE_CALLBACK(void,PICTRenderProc)(GrafElPtr element, GWorldPtr destGWorld);
  32.  
  33. //-------------------------------------------------------------------------------------
  34. //Scrolling Graphic Element
  35. //-------------------------------------------------------------------------------------
  36.  
  37. typedef struct {
  38.     GrafElement        baseGraphic;
  39.     short            hScroll;            //horiz scroll for each changeIntrvl
  40.     short            vScroll;            //vert scroll for each changeIntrvl    
  41.     short            totalHScroll;        //total current horizontal scroll
  42.     short            totalVScroll;        //total current vertical scroll
  43. } ScrollingGraphic, *ScrlGraphicPtr;
  44.  
  45. // Creation of PICT-based scrolling graphics
  46. GrafElPtr NewScrollingGraphic(GEWorldPtr world, OSType id, short plane, 
  47.                         short resNum, short mode, short xPos, short yPos);
  48.  
  49. //Start or stop (autoHScroll == autoVScroll == 0) auto-scrolling
  50. void AutoScrollGraphic(GEWorldPtr world, OSType elementID, 
  51.                     short interval, short autoHScroll, short autoVScroll);
  52.                     
  53. // Manually set current scroll position
  54. void SetScroll(GEWorldPtr world, OSType elementID, short hScroll, short vScroll);
  55.  
  56. // RenderProc for scrolling graphics
  57. GE_CALLBACK(void,RenderScrollingGraphic)(GrafElPtr graphic, GWorldPtr destGWorld);
  58.  
  59. // AutoChangeProc for scrolling graphics
  60. GE_CALLBACK(void,ScrollGraphic)(GEWorldPtr world, GrafElPtr graphic);
  61.  
  62. //-------------------------------------------------------------------------------------
  63. // Animated (frame-sequence) Graphic Element
  64. //-------------------------------------------------------------------------------------
  65.  
  66. typedef enum {    singleframe=0, 
  67.                 reciprocating, 
  68.                 loop, 
  69.                 oneshotvanish, 
  70.                 oneshotstop, 
  71.                 oneshotloop} AnimSequence;
  72.  
  73. typedef struct {
  74.     GrafElement    baseGraphic;
  75.     short            currentFrame;        // number of frame now displayed
  76.     short            nFrames;            // number of frames available
  77.     AnimSequence    seq;                // type of animation
  78. } FrameSeqGraphic, *SeqGraphicPtr;
  79.  
  80.  
  81. // Creation of PICT-based multiframe graphics
  82. GrafElPtr NewAnimatedGraphic(GEWorldPtr world, OSType id, short plane, 
  83.                     short resNum, short mode, short xPos, short yPos, short nFrames);
  84.                     
  85. // Activate or deactivate (interval == 0) automatic animation 
  86. void AnimateGraphic(GEWorldPtr world, OSType elementID, 
  87.                     short interval, AnimSequence sequence);
  88.                     
  89. // Manually set current frame                    
  90. void SetFrame(GEWorldPtr world, OSType elementID, short newFrame);
  91.  
  92. // Frame sequence forwards or backwards
  93. void SetAnimDirection(GEWorldPtr world, OSType elementID, Boolean forward);
  94.  
  95. // Increment or decrement current frame according to frame sequence
  96. void BumpFrame(GEWorldPtr world, OSType elementID);
  97.  
  98. // Alternate interface to BumpFrame: avoid lookup when GrafElPtr available.
  99. // Also used as AutoChangeProc for frame-based graphics
  100. GE_CALLBACK(void,PtrBumpFrame)(GEWorldPtr world, GrafElPtr graphic);
  101.  
  102. // Set horizontal and/or vertical mirroring
  103. // NOTE!! Only works for transparent FrameSeqGraphics using default BitCopyProc
  104. // and srcCopy FrameSeqGraphics which have been masked with MakeMask() (see FastBitCopies.h)
  105. void SetMirroring(GEWorldPtr world, OSType elementID, Boolean mirrorH, Boolean mirrorV);
  106.  
  107. // RenderProc for frame-changing graphics
  108. GE_CALLBACK(void,RenderFrameGraphic)(GrafElPtr graphic, GWorldPtr destGWorld);
  109.  
  110.  
  111. //-------------------------------------------------------------------------------------
  112. //Simple one-line text graphic
  113. //-------------------------------------------------------------------------------------
  114.  
  115. // Text graphic alignment modes; combine one horizontal mode and one vertical mode
  116. #define geHJustLeft        0x0001
  117. #define geHJustCenter    0x0002
  118. #define geHJustRight    0x0004
  119. #define geVJustTop        0x0100
  120. #define geVJustCenter    0x0200
  121. #define geVJustBottom    0x0400
  122.  
  123. typedef struct {
  124.     GrafElement        baseGraphic;
  125.     char            *tgText;                //pointer to text
  126.     FontInfo        tgFInfo;            //FontInfo rec for text
  127.     long            tgFontNum;            //etc.
  128.     Rect            tgRefRect;
  129.     short            tgFontSize;
  130.     short            tgFontFace;
  131.     short            tgAlignMode;
  132.     RGBColor        tgColor;            //Color for text
  133. } TextGraphic, *TextGraphicPtr;
  134.  
  135. // Create new text graphic
  136. // GrafElPtr NewTextGraphic(GEWorldPtr world, OSType id, short plane,
  137. //                    short xPos, short yPos, short mode,
  138. //                    StringPtr fontName, short txStyle, short size, 
  139. //                    RGBColor color, StringPtr text);
  140.                     
  141. GrafElPtr NewTextGraphic(GEWorldPtr world, OSType id, short plane,
  142.                     Rect refRect, short alignMode,
  143.                     const char *fontName, short txStyle, short size,
  144.                     RGBColor color, char *text);
  145.  
  146. // Change text of existing text graphic
  147. void SetTextGraphicText(GEWorldPtr world, OSType elementID, char *newText);
  148.  
  149. // RenderProc for text graphics
  150. GE_CALLBACK(void,RenderTextGraphic)(GrafElPtr graphic, GWorldPtr destGWorld);
  151.  
  152. #if defined(TARGET_IS_WIN95)
  153.  
  154. // For Windows 95, we need to dispose the font. This will be done automatically,
  155. // UNLESS the application sets its own Cleanup Procedure for the element. In this
  156. // case, the application should call DisposeFont() when it has finished its own cleanup.
  157.  
  158. GE_CALLBACK(void, DisposeFont)(GEWorldPtr world, GrafElPtr element);
  159.  
  160. #endif
  161.  
  162. //-------------------------------------------------------------------------------------
  163. // This Graphic Element tiles a single PICT into its (larger) animationRect
  164. //-------------------------------------------------------------------------------------
  165.  
  166. GrafElPtr NewTiledGraphic(GEWorldPtr world, OSType id, short plane, 
  167.                         short resNum, short mode, Rect destRect);
  168.                         
  169. // RenderProc for tiled graphics
  170. GE_CALLBACK(void,RenderTiledGraphic)(GrafElPtr graphic, GWorldPtr destGWorld);
  171.  
  172. #ifdef __cplusplus
  173. }
  174. #endif
  175.  
  176.  
  177. #endif
  178.